Nintendo's GAME BOY® hand-held and home video game platforms have been extraordinarily successful. Nintendo released its first Nintendo Entertainment System home video game console in the early 1980's and released the first GAME BOY® in the late 1980s. Since then, this product and its successors (Super Nintendo Entertainment System, Nintendo 64, Nintendo GameCube System, GAME BOY COLOR®, GAME BOY ADVANCE®, Nintendo DS, and other systems) have captured the imaginations of millions of video game players throughout the world.
A wide number of different software applications (including but not limited to video games) have been designed to run on these various platforms. People throughout the world enjoy these applications every day. One can see them being used at home, on subways, at sports arenas, after school, and in a number of other contexts. See FIG. 1A to see someone playing an exemplary handheld Nintendo video game platform.
Nintendo's gaming platforms are examples of platforms having specialized hardware that is optimized for low cost, excellent performance and good graphics. In general, these devices are not really general purpose computers—they are special-purpose devices with specialized capabilities particularly adapted and often optimized to video game play. These special capabilities provide low cost and exciting video game play action with great graphics and sound to enhance the game playing experience.
More recently, handheld and portable computing devices are exploding in popularity. Cellular telephones now come with color displays and powerful processors and graphics accelerators that can perform complex imaging and computing functions including video game play. Handheld personal digital assistants (PDAs) have become increasingly sophisticated and capable with powerful processors, substantial amounts of memory resources, and some interesting graphics and display capabilities (some now even have graphics processors). Portable pocket personal computers provide as much hardware horsepower and computer graphics capabilities as desktop computers of only a few years ago. Gaming platforms such as home consoles and handheld video game systems are also being increasingly sophisticated, flexible and capable, and include additional capabilities such as touch screen (Nintendo DS), wireless communications (Nintendo DS, Nintendo Revolution), networked gaming, downloadable FLASH memory (Nintendo Revolution) and other features.
Convergence of these various technologies has led to multipurpose devices that can perform a variety of different functions. For example, cellular telephones can also perform functions of the type that pocket PCs and/or personal digital assistants have been performing for some time. The wireless networking capabilities of such convergence platforms offer interesting possibilities for networked, head-to-head or other video game play.
All of these hardware and platform innovations demonstrate that software content is perhaps the most important indicia of success. Just as television viewers are likely to be more interested in the particular TV programs they watch than in the type of television they watch them on, many video game players are likely to be more interested in the particular games they wish to play than in the hardware platforms and technology used to play those games. These market forces create an increasing need for efficient, cost-effective ways to take video games and other software written for one platform and permit them to be played on other platforms.
While the GAME BOY® platforms are inexpensive and have long battery life, there may be situations in which it would be desirable to play or use applications developed for one platform (e.g., GAME BOY®, NES, SNES, AGB, etc.) on such other platforms such as:                other, non-native video game platforms        cell phones        personal digital assistants (PDAs)        pocket PCs        set top boxes        personal computers, laptop computers, workstations        automobile-mounted entertainment systems        airline, train and boat entertainment systems        smart telephones        portable music players        portable radios, stereos, etc.        wearable electronic appliances        credit card sized computers        any electronic appliance with a microprocessor and a display        any other computing systems with or without specialized graphics hardware.        
As one example, an airline, train or other vehicle passenger might want to play video games during a long journey. As shown in FIG. 1B, airlines are installing seat-back computer displays into the backs of airline seats. Such seat-back displays often provide a low cost personal computer including a processor, random access memory, liquid crystal display and input device(s). Similar displays could be installed in other vehicles (e.g., trains, ships, vans, cars, etc.) or in other contexts (e.g., at walk-up kiosks, in hotel rooms, etc.). It would be desirable under certain circumstances to allow users to execute all sorts of different applications including GAME BOY®, GAME BOY COLOR® and GAME BOY ADVANCE® video games and other applications using the general-purpose computer capabilities of such seat-back or similar display devices.
Personal computers (desktop, laptop and portable) have proliferated throughout the world and are now available at relatively low cost. One trend has shifted some entertainment from the home television set to the home personal computer, where children and adults can view interesting web pages and play downloaded video games, music, videos and other content. In some circumstances, it may be desirable to allow users to play GAME BOY®, GAME BOY COLOR® and GAME BOY ADVANCE® video games on their personal computers (see FIG. 1C).
A wide variety of so-called personal digital assistants (PDA's) have become available in recent years (see FIG. 1D). Such devices now comprise an entire miniature computer within a package small enough to fit into your pocket. Mobile cellular telephones are also becoming increasingly computationally-intensive and have better displays so they can access the World Wide Web and perform a variety of downloaded applications. Such devices as cell phones, PDAs, pocket PCs and the like may, for example, include a processor 50, a display 52, user input device(s) 54, sound generation 56, memory 58, input/output 60, and other capabilities including wireless communications. In some circumstances, it may be desirable to allow people to play GAME BOY®, GAME BOY COLOR® and GAME BOY ADVANCE® video games and other GAME BOY®, GAME BOY COLOR® and GAME BOY ADVANCE® applications on a personal digital assistant, cellular telephone or other such device.
It may also be desirable to allow video games written for one video game platform to play on another video game platform. For example, games written for the Nintendo Entertainment System, the Super Nintendo Entertainment System and the Nintendo 64 are fun and continue to have a very wide following. It might be desirable to play such games on newer video game hardware platforms such as for example the Nintendo Revolution system or the Nintendo GameCube System.
In one particular illustrative non-limiting example, the same special-purpose sound and graphics circuitry provided by the GAME BOY® and other video game platforms is not generally found in the various other platforms. Providing these missing capabilities is one of the challenges to running a GAME BOY®, GAME BOY COLOR® and GAME BOY ADVANCE® video game (or other GAME BOY®, GAME BOY COLOR® and GAME BOY ADVANCE® application) or other video game platform software on these other target platforms.
Another challenge relates to instruction set compatibility. For example, in one particular illustrative context, Nintendo's GAME BOY® is based on an older, relatively inexpensive microprocessor (the Zilog Z80) that is no longer being used in most modern general purpose computer systems such as personal computers, seat-back displays, cell phones and personal digital assistants. The Z80 instruction set (the language in which all GAME BOY® games and other GAME BOY® applications are written in) is not directly understood by modern Intel microprocessors (e.g., the 8086, 80286, 80386, Pentium and other processors in the Intel family) that are now widely used and found in most personal computers, seat-back displays, personal digital assistants, cell phones, and the like. Similarly, the ARM processor that the GAME BOY ADVANCE® product uses is not universally used. Other video game platforms use other processors that may not be widely available in cross-platform contexts. These compatibility issues provide challenges that it would be desirable to overcome in developing successful cross-platform gaming experiences.
One way to provide a cross-platform capability is to provide a software “emulator” on the target platform. See for example U.S. Pat. No. 6,672,963. Generally, a software emulator is a computer program that executes on a desired target platform (e.g., a seat-back display device, a personal computer, a personal digital assistant, a cell phone, a different video game platform, etc. as shown in FIGS. 1B-1D). The emulator software supplies at least some capabilities needed to run the game but which are missing from the target platform. As one non-limiting example, a software emulator may perform some or all of GAME BOY®'s specialized graphics functions in software, and may interface with whatever graphics resources are available on the target platform to display resulting images. A software emulator may translate or interpret ARM instructions so the microprocessor of the target platform can perform the functions that GAME BOY ADVANCE® would perform if presented with the same instructions. The software emulator may include software code that emulates or simulates hardware capabilities within the GAME BOY ADVANCE® circuitry (e.g., audio and/or graphics processing) and/or translate associated GAME BOY ADVANCE® application requests into requests that can be handled by the hardware resources available on the target platform. For example, the target platform may include a graphics adapter and associated display that is incompatible with GAME BOY ADVANCE®'s graphics hardware but which can perform some of the basic graphics functions required to display GAME BOY ADVANCE® graphics on a display. Emulators, in general, do not exactly emulate or duplicate the functionality of the original platform, but the functionality they provide is often “close enough” to provide a satisfying end user game playing experience.
A number of GAME BOY® and GAME BOY ADVANCE® emulators have been written for a variety of different platforms ranging from personal digital assistants to cell phones to personal computers. However, one area of needed improvement relates to obtaining acceptable speed performance and high quality sound and graphics on a lower-capability platform. A lower-capability platform (e.g., a seat-back display, a personal digital assistant or a cell phone) may not have enough processing power to readily provide acceptable speed performance. The target platform generally needs to run the emulator software as well as the game software, meaning that it has to, in a sense, do “double duty.” Unless the software emulator is carefully designed and carefully optimized, it may not be able to maintain real time speed performance when running on a slower or less highly capable processor. Slow-downs in game performance are generally unacceptable if the average user can notice them since they immediately affect and degrade the fun and excitement of the game playing experience.
Performance problems are exacerbated by the penchant of some video game developers to squeeze the last bit of performance out of the video game platform. Performance tricks and optimizations within a game application may place additional demands on any emulator running the application. Some emulators provide acceptable results when running certain games but unacceptable results (or do not work at all) for other games. An ideal solution provides acceptable results across a wide range of different games and other applications such that the target platform can run many games or other applications developed for the original platform.
Another challenge to good design relates to maintaining excellent image and sound quality. Ideally, the target platform should be able to produce graphic displays that are nearly the same quality as those that would be seen on the original platform. Additionally, the color rendition and other aspects of the image should be nearly if not exactly the same. Sounds (e.g., music and speech) should have at least the same quality as would be heard on the original platform. All of these capabilities should be relatively closely matched even on platforms with radically different sound and graphics hardware capabilities.
“Porting” is another common approach to provide cross-platform game playing capabilities. Many or most third party video game software developers are intensely interested in porting since it allows their games to run a variety of different platforms and thus increases potential sales. Video game hardware platform developers may also be interested in porting technology because porting can increase the library of games that are able to run on any particular platform. For example, if a particular game has become a hit on one platform, there may be interest in porting that game to other platforms as well. End users can benefit in some cases because they are able to play a particular game on the platform they have invested in without having to buy or borrow a different platform to play that game.
The technology herein provides new “porting” and/or other techniques for “trans-compiling” a video game written for one platform so that the resulting code can run on a different platform.
In one exemplary illustrative non-limiting implementation, a video game originally written for a portable dedicated video game hardware platform such as for example Nintendo's GAME BOY ADVANCE® platform can be “trans-compiled” so that it can be stored on a storage medium and played on a different platform such as a Palm Operating System based mobile and/or wireless computing device, a computing or video game device with a different (e.g., Intel-based) microprocessor or some other platform.
Briefly, in one exemplary illustrative non-limiting implementation, the binary executable code for the video game (i.e., the so-called “ROM” in Internet parlance) is decompiled to (re)generate source code. Such decompilation in one exemplary illustrative non-limiting implementation (re)generates the source code in a high level language such as C. The decompiled source code is then processed to eliminate unnecessary (e.g., hardware specific) libraries and functionality. The resulting modified source code is then recompiled and re-linked with libraries native to the target platform that are used to handle hardware functions such as video, audio, input, output, etc.
In one exemplary illustrative non-limiting implementation, the recompilation process links in libraries that remap hardware functions supplied by the original platform to new function calls for the specific target platform. The resulting recompiled game or other application can run at very high speed on the desired target platform (e.g., personal computer, Palm OS, other video game platform, or any other computing platform).
The techniques may, under some circumstances, provide well over an order of magnitude speed performance boost (e.g., ten to one hundred times faster performance) over prior traditional emulator approaches. The technology may allow games to be played on much lower cost/performance platforms than has generally previously been possible.